package main

import "fmt"

type Alipay struct{}

//为Alypay添加CanUseFaceID方法，表示电子支付方式支持刷脸
func (a *Alipay) CanUseFaceID() {}

//现金支付方式
type Cash struct{}

//为Cash添加Stolen()方法，表示现金支付会出现偷窃情况
func (a *Cash) Stolen() {}

//具备刷脸特性的接口
type ContainCanUseFaceID interface {
	CanUseFaceID()
}

//具备被偷窃特性的接口
type ContainStolen interface {
	Stolen()
}

// 打印支付方式具备的特点
func print(payMethod interface{}) {
	switch payMethod.(type) {
	case ContainCanUseFaceID: //可以刷脸
		fmt.Printf("%T can use faceID \n", payMethod)
	case ContainStolen:
		fmt.Printf("%T may be stolen\n", payMethod)
	}
}

func main() {
	//使用电子支付判断
	print(new(Alipay))
	print(new(Cash))
}
